<p>Using such generic exceptions as <code>Error</code>, <code>RuntimeException</code>, <code>Throwable</code>, and <code>Exception</code> prevents calling methods from handling true, system-generated exceptions differently than application-generated errors. </p>
<h2>Noncompliant Code Example</h2>

<pre>
public void foo(String bar) throws Throwable {  // Noncompliant
  throw new RuntimeException("My Message");     // Noncompliant
}
</pre>
<h2>Compliant Solution</h2>

<pre>
public void foo(String bar) {
  throw new MyOwnRuntimeException("My Message"); 
}
</pre>
<h2>Exceptions</h2>

<p>Generic exceptions in the signatures of overriding methods are ignored.</p>
<pre>
@Override
public void myMethod() throws Exception {...}
</pre>
<h2>See</h2>

<ul>
<li> <a href="http://cwe.mitre.org/data/definitions/397.html">MITRE, CWE-397</a> - Declaration of Throws for Generic Exception</li>
</ul>

